<?php
/**
* Template类
*
* 本程序主要作用是把Controller中取得的数据放入页面以及渲染页面。
* 
* @category   Template
* @package    Base
* @copyright  Copyright (c) ink工作室 (http://www.inkphp.com)
* @author     张旭刚
* @version    v1.0 beta
*/
class Template{
    public $tplVars;
    /**
     *@method __contruct 构造函数 
     */
    public function __construct() {
        $this->tplVars = array();
    }
    
    /**
     * @method 输出页面
     * @param string $template 要输出的模板地址
     */
    public function display($template){
        $content = $this->fetch($template);
        echo $content;
    }

    public function json($encode = true){
        $data = json_encode($this->tplVars);
        if($encode){
            $data = doEncrypt($data, SKEY).'_'.KEY_NUMBER;
        }
        echo $data;
    }
    
    
    /**
     * @method 静态化页面
     * @param string $template
     * @param string $dest
     * @return boolean 输出到文件是否正确 
     */
    public function createHtml($template,$dest){
        $content = $this->fetch($template);
        return file_put_contents($dest, $content);
    }
    
    /**
     * @method 运行模板并加入并解析模板变量
     * @param string $template 要运行的模板
     * @return 运行之后的全部html代码 
     */
    private function fetch($template){
        foreach($this->tplVars as $key => $v){
            $$key = $v;
        }
        ob_start();
        include($template);
        $content = ob_get_clean();
        return $content;
    }
    
    /**
     * @method 为模板变量赋值
     * @param string $name 模板变量名称
     * @param anytype $data 模板变量值
     */
    public function assign($name, $data = null){
        $this->tplVars[$name] = $data;
    }
    
    public function __destruct() {
        unset($this->tplVars);
    }
}
